#include <cstdio>

struct Node
{
    int x, y, f1, f2;
};

int a, b, n, m;
int map[ 101 ][ 101 ];
Node robot[ 101 ];

void init( )
{
    int i, j;
    char fl[ 2 ];
    scanf("%d%d%d%d", &a, &b, &n, &m);
    for ( i = 0; i <= b; i++ )
        for ( j = 0; j <= a; j++ )
            map[ i ][ j ] = 0;
    for ( i = 1; i <= n; i++ )
    {
        scanf("%d%d%s", &robot[ i ].x, &robot[ i ].y, fl);
        switch( fl[ 0 ] )
        {
            case 'N': robot[ i ].f1 = 0; robot[ i ].f2 = 1; break;
            case 'E': robot[ i ].f1 = 1; robot[ i ].f2 = 0; break;
            case 'S': robot[ i ].f1 = 0; robot[ i ].f2 = -1; break;
            case 'W': robot[ i ].f1 = -1; robot[ i ].f2 = 0; break;
        }
        map[ robot[ i ].y ][ robot[ i ].x ] = i;
    }
}

void work( )
{
    int p, r;
    bool flag = true;
    char command[ 2 ];
    while ( m-- )
    {
        scanf("%d%s%d", &p, command, &r);
        if ( !flag )
            continue;
        while ( r-- )
        {
            if ( command[ 0 ] == 'F' )
            {
                map[ robot[ p ].y ][ robot[ p ].x ] = 0;
                robot[ p ].x += robot[ p ].f1;
                robot[ p ].y += robot[ p ].f2;
                if ( robot[ p ].x == 0 || robot[ p ].x == a + 1 || robot[ p ].y == 0 || robot[ p ].y == b + 1 )
                {
                    printf("Robot %d crashes into the wall\n", p);
                    flag = false;
                    break;
                }
                else if ( map[ robot[ p ].y ][ robot[ p ].x ] != 0 )
                {
                    printf("Robot %d crashes into robot %d\n", p, map[ robot[ p ].y ][ robot[ p ].x ]);
                    flag = false;
                    break;
                }
                map[ robot[ p ].y ][ robot[ p ].x ] = p;
            }
            if ( command[ 0 ] == 'R' )
            {
                if ( robot[ p ].f1 == 0 && robot[ p ].f2 == 1 )
                {
                    robot[ p ].f1 = 1;
                    robot[ p ].f2 = 0;
                }
                else if ( robot[ p ].f1 == 1 && robot[ p ].f2 == 0 )
                {
                    robot[ p ].f1 = 0;
                    robot[ p ].f2 = -1;
                }
                else if ( robot[ p ].f1 == 0 && robot[ p ].f2 == -1 )
                {
                    robot[ p ].f1 = -1;
                    robot[ p ].f2 = 0;
                }
                else if ( robot[ p ].f1 == -1 && robot[ p ].f2 == 0 )
                {
                    robot[ p ].f1 = 0;
                    robot[ p ].f2 = 1;
                }
            }
            if ( command[ 0 ] == 'L' )
            {
                if ( robot[ p ].f1 == 0 && robot[ p ].f2 == 1 )
                {
                    robot[ p ].f1 = -1;
                    robot[ p ].f2 = 0;
                }
                else if ( robot[ p ].f1 == 1 && robot[ p ].f2 == 0 )
                {
                    robot[ p ].f1 = 0;
                    robot[ p ].f2 = 1;
                }
                else if ( robot[ p ].f1 == 0 && robot[ p ].f2 == -1 )
                {
                    robot[ p ].f1 = 1;
                    robot[ p ].f2 = 0;
                }
                else if ( robot[ p ].f1 == -1 && robot[ p ].f2 == 0 )
                {
                    robot[ p ].f1 = 0;
                    robot[ p ].f2 = -1;
                }
            }
        }
    }
    if ( flag )
         puts("OK");
}

int main( )
{
    int t;
    scanf("%d", &t);
    while ( t-- )
    {
        init( );
        work( );
    }
    return 0;
}
